home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tech Arsenal 1
/
Tech Arsenal (Arsenal Computer).ISO
/
tek-17
/
qdpmizip.zip
/
QDPMIZIP.EXE
/
QDPMI.DOC
< prev
next >
Wrap
Text File
|
1992-08-04
|
22KB
|
542 lines
=========================================================================
Quarterdeck Office Systems
QDPMI Host V1.0
=========================================================================
NOTICE TO END USERS: THIS SOFTWARE MAY BE FREELY COPIED, HOWEVER YOUR
ACTUAL USE OF QDPMI IS CONDITIONED UPON (i) YOUR POSSESSION OF AN
AUTHORIZED COPY OF QEMM-386 AND (ii) YOUR COMPLIANCE WITH THE TERMS OF
THE QEMM-386 QUARTERDECK END USER LICENSE AGREEMENT, WHICH GOVERNS USE OF
THIS SOFTWARE.
Copyright (c) Quarterdeck Office Systems, Inc. 1986-1992. ALL RIGHTS
RESERVED. DOS Extension Technology by ERGO Computing, Inc. Copyright (c)
1991-1992. ALL RIGHTS RESERVED.
=========================================================================
INTRODUCTION
------------
The Quarterdeck DPMI Host (QDPMI) is a companion product to the Quarterdeck
Expanded Memory Manager-386 (QEMM-386). It is a full implementation of
Version 0.9 of the DOS Protected Mode Interface (DPMI) specification,
including MS-DOS extensions and virtual memory.
DPMI is an emerging industry standard for allowing DOS applications
to access the protected mode features of the 80386 and 80486 processors.
To DOS application users this means that an application can now be
larger and more full featured than those applications restricted to
640K.
The DPMI specification was developed by a consortium of computer companies,
including Quarterdeck, Borland, Ergo, IBM, Intel, Intelligent Graphics,
Locus, Lotus Development, Microsoft, Phar Lap, Phoenix Technologies
and Rational Systems.
Protected mode multitasking environments, memory managers, or operating
systems that implement DPMI functions are called DPMI hosts. Protected
mode applications that request DPMI functions (directly or indirectly)
are called DPMI clients.
DOS applications using DPMI (DPMI clients) can run in a variety of
operating environments, including DOS, DR DOS, Microsoft Windows,
OS/2, 386-based UNIX, DESQview 386 and DESQview/X provided a
DPMI host is present.
The Quarterdeck DPMI Host (QDPMI) provides mode-switching and extended
memory management to DPMI clients. It runs at a more privileged level
than its clients and uses the hardware to enforce a supervisor/user
protection model. This allows QDPMI to support centralized virtual
memory and maintain full control over client programs' address spaces
and access to hardware.
Users of Quarterdeck's DESQview 386 or DESQview/X can run multiple QDPMI
clients simultaneously, each optionally having its own virtual memory.
Software Compatibility
----------------------
DOS applications that support the DPMI specification are just coming
to market. The earliest of these are programmer's tools including
Microsoft's C/C++ Development System for Windows (version 7), Borland's C++
(version 3) and Intel's Code Builder Kit (version 1.1). QDPMI is compatible
with the above programs.
Microsoft Windows version 3.1 includes its own DPMI host. When QDPMI
sees Windows star tup, it steps aside letting Windows provide the DPMI
services for programs running in its environment.
About This Manual
-----------------
This manual is your reference guide to the Quarterdeck DPMI Host (QDPMI).
This manual tells you:
o How to install QDPMI.
o How to specify whether virtual memory is to be used and the amount
of virtual memory to be reserved.
o About the command line parameters available with QDPMI.
The Quarterdeck DPMI Host (QDPMI) requires the Quarterdeck Expanded
Memory Manager (QEMM-386) for its services to be made available to
DPMI client programs. So before you install QDPMI, please check that
QEMM-386 is either installed or available to be installed on your
system.
Installing QDPMI is easy. All you must do is run the QDPMI installation
program, INSTALL.
During installation, INSTALL will display several screens, either
to ask for information or to inform you of its progress. If QEMM-386 is not
currently installed in your system, INSTALL will post a warning message,
telling you that QEMM-386 was not found in your CONFIG.SYS file and telling
you to install it. As mentioned earlier, QDPMI will not work without QEMM-
386.
INSTALL will need to know where to copy QDPMI files. The default drive and
directory is the same as that used by QEMM-386 (usually C:\QEMM). Next
INSTALL will ask you whether you would like QDPMI to provide virtual memory
support for each DPMI client you run. If you answer Yes, you must then
indicate how much disk space should be allocated for the virtual memory swap
file. The default is 1024K per DPMI client.
When QDPMI uses virtual memory, it creates a virtual memory swap file.
INSTALL next asks you whether QDPMI should automatically delete the
virtual memory swap file when your application terminates. Creating and
deleting the virtual memory swap file takes more time, but conserves disk
space.
When you have answered the above questions, INSTALL automatically
creates the necessary change to your AUTOEXEC.BAT and CONFIG.SYS files
needed by DOS to load QDPMI, and offers to modify these files for you. Then
it copies the QDPMI files to the drive and directory you indicated.
Installing QDPMI from floppy
----------------------------
To install QDPMI from the QDPMI diskette:
Place the QDPMI disk in drive A.
Type A:INSTALL and press Enter.
Installing QDPMI by downloading from the Quarterdeck BBS
--------------------------------------------------------
If you have downloaded the QDPMI files from a Quarterdeck bulletin
board into a drive/directory on your hard disk:
Change to the drive and directory where the QDPMIZIP.EXE file you
downloaded from the bulletin board is stored.
Type QDPMIZIP and press Enter.
NOTE: QDPMIZIP.EXE is a self-extracting zip file that when run will
extract three files, INSTALL.EXE, LICENSE.TXT, and QDPMI.QIP
into the current directory.
Now type INSTALL and press Enter.
QDPMI Installation Program
--------------------------
NOTE: If you have an LCD or Gas Plasma display, as on some laptops, or
a monochrome monitor, we recommend that you run INSTALL in
mononchrome mode by typing X:INSTALL/m (where X: is the drive and
directory containg the QDPMI files.
Follow the instructions on the screen. INSTALL copies the QDPMI files
to your hard disk and configures QDPMI.
It is always a good idea when making changes to your system configuration
to run QEMM-386's Optimize program after making your changes. This
will insure the best use of your system's memory.
After successfully completing the QDPMI installation procedure, it
will be necessary to reboot your system to begin using QDPMI.
If you want to check that DPMI is working, typing QDPMI at the DOS command
line without any parameters will display the current status of QDPMI.
That's all there is to installing QDPMI.
Installation Notes
------------------
QDPMI Client Initialization with Virtual Memory
-----------------------------------------------
At DPMI client initialization time (when an application that requires
DPMI services is run), QDPMI will attempt to create the virtual memory
swap file whose name and size appear in the QDPMI environment variable.
If the swap file name is not specified in the QDPMI environment variable,
the file will be opened or created in the directory from which QDPMI.SYS
was loaded at system startup, with the base name of QDPMI.SWP.
If the swap file size is not specified, QDPMI will create the file
with a default size of 2 Megabytes.
If the swap file exists, it will be used. Its existing size will be
modified to equal the user specified value.
If the KILLSWAP option is specified, QDPMI will delete the virtual
memory swap file upon the termination of the DPMI client application.
In multitasking environments such as DESQview and DESQview/X, each task or
DESQview window can have its own unique set of QDPMI switches and QDPMI
environment variable options in force.
It is necessary that each simultaneously executing DPMI client application
utilizing virtual memory have its own unique virtual memory swap file. The
name of the swap file that is provided in the QDPMI environment variable is
therefore modified by QDPMI before it is opened or created, by appending a
digit to the end of its base name. For example: QDPMI.SWP would become
QDPMI0.SWP, and QDPMISWP.SWP would become QDPMISW0.SWP. The actual digit
will vary depending on whether DESQview is active or not, and how many other
DPMI clients are active in other DOS partitions.
If for some reason QDPMI cannot find or create its virtual memory swapfile,
it will issue a message and disable the virtual memory feature for the
current client's invocation. Causes for this may be:
o Insufficient disk space.
o Improperly specified Swap File name (QDPMI environment variable).
o Non-existent directory specified.
System Interrupt Stack Configuration
------------------------------------
It is important for some applications that a line exist in CONFIG.SYS
setting up system interrupt stack configuration. The suggested values are:
stacks = 9,256
This means that DOS should allocate nine system stacks, each 256 bytes in
size.
The default for this setting is:
stacks = 9,128
Under QDPMI, this may not be sufficient.
Novell Netware
--------------
QDPMI has the capability to support either 16 or 32 bit DPMI clients.
When a 32 bit client is executing, it expects all 32 bits of the processor's
32 bit registers to be preserved across interrupts. There are some device
drivers and TSRs that utilize the 80x86's 32 bit registers, but do not
preserve them, causing undesirable erratic behavior of 32 bit DPMI clients.
A notable example is Novell's LAN WorkPlace for DOS v4.01 (TCPIP.EXE).
Running the supplied TSR program LWPFIX.COM after loading the LAN WorkPlace
TCPIP driver will prevent this erratic behavior.
NOTE: Novell has addressed this problem, and later releases will have
the appropriate corrections.
QDPMI Reference
---------------
This chapter is the reference guide for command line parameters used
with both QDPMI.SYS as well as QDPMI.COM programs. This chapter also
explains the way to use the QDPMI environment variable to further
control QDMPI's behavior.
QDPMI Command Line Parameters
-----------------------------
Both QDPMI.SYS and QDPMI.COM respond to the same set of command line
parameters. Command line parameters may be used on the QDPMI device
driver line in CONFIG.SYS to initially set QDPMI's options. QDPMI.COM
may also be used to modify any or all QDPMI's options at a later time.
To use a QDPMI.SYS command line parameter you type the parameter name on the
same line as DEVICE=C:\QEMM\QDPMI.SYS in your CONFIG.SYS file. To use a
QDPMI.COM command line parameter you type the parameter name after QDPMI at
the DOS prompt. You may use an abbreviation instead of the parameter name.
The abbreviation for each QDPMI command line parameter is shown below in
parentheses after each parameter name.
The QDPMI command line parameters are:
DPMI (ON) turns DPMI 0.9 services on. This is a default
setting.
NODPMI (OFF) turns DPMI services off.
VMON (VM) turns QDPMI virtual memory on. This is the default
setting.
VMOFF (NOVM) turns QDPMI virtual memory off.
KILLSWAP (KLSW) causes the QDPMI host to delete its virtual memory
swap file at the termination of the DPMI client
application. This is the default setting.
KEEPSWAP (KPSW) causes the QDPMI host not to delete its virtual
memory swap file at the termination of the DPMI
client application.
EXTCHKON (XCHK) causes the QDPMI host to step out of the way for
incompatible DOS extenders that prefer to do all of
their own DOS extender work in their own way. This is
the default setting.
EXTCHOFF (NOXCHK) causes the QDPMI host not to step out of the way for
incompatible DOS extenders that prefer to do all of
their own DOS extender work in their own way.
The QDPMI Environment Variable
------------------------------
QDPMI looks at an environment variable to determine information regarding
its configuration. The environment variable is QDPMI. Its syntax is
as follows:
SET QDPMI=[MAXLOW <aaaa>] [MINMEM <bbbb>] [MAXMEM <cccc>] [SWAPFILE
<filename> [dddd]]
NOTE: The environment variable line must appear in your AUTOEXEC.BAT
file as one line.
The QDPMI environment variable is not required to be set for QDPMI's
services to be utilized. QDPMI will use a set of default values in the
absence of user specified ones. All individual parameters within the QDPMI
environment variable are also optional, and may be specified in any order.
Each individual parameter group specified MUST be complete within itself,
however.
MAXMEM <cccc> is the maximum number of kilobytes of physical memory that
will be reserved by QDPMI. This can be any number up to the
amount of physical memory available on your system, and
will be allocated from VCPI, XMS, extended, and conventional
memory resources, in that order. The memory used by QDPMI
includes all memory for use by its code, data, and page
tables, as well as memory requested for use by the DPMI
client application. If MAXMEM is greater than the available
physical memory, or greater than external limits placed on
extended memory resources by multitaskers such as DESQview,
MAXMEM will be adjusted downward to be within those limits.
The default value is system max. If omitted or explicitly set
to zero, MAXMEM is set to the largest value supported on your
system. This will either be the size of all of your physical
memory, or that which is available to the current partition
of DESQview, whichever is smaller.
MINMEM <bbbb> is the amount of physical memory in kilobytes that will be
reserved by QDPMI immediately upon DPMI client application
initialization. MAXMEM must be greater than or equal to
MINMEM. If this is not the case, QDPMI will set the value
of MAXMEM to equal that of MINMEM. The difference between
MAXMEM and MINMEM is the amount of memory that will be
managed dynamically by QDPMI, and made available to other
applications (including other DPMI clients) when freed. This
dynamic memory pool is managed through the use of VCPI memory
only. The default value for MINMEM varies depending on the
amount of physical memory installed in your computer. Its
lowest possible value is 140 kilobytes. Any attempt to
set MINMEM to a lower value will be ignored, and this minimum
will be used. If unspecified, MINMEM will also be set to this
minimum value.
MAXLOW <aaaa> is the maximum number of kilobytes of conventional DOS memory
allowed to be reserved by QDPMI for use as its memory
resources. Setting it to any non-zero value will allow QDPMI
to allocate DOS conventional memory for use in its memory
pool. Note that QDPMI will only resort to using DOS
conventional memory if expanded and extended memory resources
are insufficient to satisfy the MINMEM request. The default
value is 0. Conventional memory is only used if MINMEM cannot
be satisfied from other resources, and only if this value is
non-zero.
SWAPFILE <filename> [<dddd>] is the base name of the virtual memory swapfile
that QDPMI will use, optionally followed by its size in
kilobytes. The size of the virtual memory swapfile that you
specify may be any value up to 64 megabytes or the size of
the free space available on your hard disk. Be aware,
however, that at DPMI client initialization, a fixed size
file will be created that is the FULL SIZE that you have
requested. The default base filename is QDPMI.SWP. Its
default size is 2MB.
Virtual Memory Total Memory Size
--------------------------------
The SUM of the value of MAXMEM and the size of the virtual swapfile is the
amount of virtual memory (in kilobytes) available to QDPMI client
applications when the virtual memory option is enabled.
Error Messages
--------------
QDPMI will display error messages when trying to load QDPMI, when
trying to initialize a DPMI client. In addition, error messages may
also be generated by the QDPMI kernel or the DOS extender.
QDPMI.COM error messages are as follows:
----------------------------------------
QDPMI: Client already active -- Cannot modify parameters.
A DPMI client has spawned COMMAND.COM, and is still active in the
current DOS partition. It is inappropriate to change QDPMI parameters
while the QDPMI host is currently active.
QDPMI: Already supported -- Not reloaded.
Another DPMI Host other than Quarterdeck's has been detected.
Quarterdeck's QDPMI is not loaded.
QDPMI: Version incompatibility error -- Re-install or use same version.
This message only appears if the device driver QDPMI.SYS and the
utility program QDPMI.COM are not the same version. This is an error in
installation or updating. You must re-install QDPMI.
QDPMI: Cannot locate QEMM386.SYS Memory Manager -- Not loaded.
Quarterdeck's QDPMI Host will only function in conjunction with
Quarterdeck's QEMM-386 Memory Manager.
QDPMI: Error accessing XDI -- Not loaded.
The QDPMI Host has encountered an error initializing its XDI interface
and cannot load.
QDPMI: Too Many DPMI Processes -- Not loaded.
The QDPMI Host has the capability of supporting up to 15 concurrent
processes under DESQview. If there are more than 15 windows on the
screen, and a DPMI client is started in the 16th or higher window, the
DPMI client will fail to initialize, and QDPMI.COM will display this
message if run in this window.
QDPMI: Overlay File Path/Name is too long.
The QDPMIVM.OVL files (and their paths) are too long. Use a path less
removed from the root.
QDPMI: Quarterdeck QDPMI Host is not resident.
QDPMI.COM issues this message if run without having previously loaded
QDPMI.SYS in CONFIG.SYS.
QDPMI client initialization messages are as follows:
----------------------------------------------------
QDPMI: Open Error.
QDPMI could not open its overlay file QDPMIVM.OVL. You should make sure
that it is in the same directory as QDPMI.SYS.
QDPMI: Processor Error.
QDPMI must have an 80386 or later processor in order to run.
QDPMI: Read Error.
QDPMI cannot read its overlay file QDPMIVM.OVL.
QDPMI: Seek Error.
QDPMI can not seek in its overlay file QDPMIVM.OVL.
QDPMI: Close Error.
QDPMI can not close its overlay file QDPMIVM.OVL.
QDPMI: Bad .OVL Error.
QDPMIVM.OVL file is corrupted.
QDPMI: Exec Error.
QDPMI could not transfer control to its overlay.
QDPMI: Init Error.
QDPMIVM.OVL could not complete its initialization.
QDPMI: Mode Error.
The QDPMI client is attempting to re-initialize the QDPMI Host in
another mode (16/32 bit) than it was originally initialized.
QDPMI: Task Error.
The maximum of 15 simultaneous DPMI clients are already running in
other DESQview windows.
QDPMI: Version Error.
There is a discrepancy between the QDPMI version of the device driver
(QDPMI.SYS), and the kernel (QDPMIVM.OVL).
QDPMI Kernel error messages are as follows:
-------------------------------------------
QDPMI Warning: User requested memory (XXXXH K) too small Using minimum:
YYYYH.
QDPMI: Invalid exception number
QDPMI: No ring 3 stack found
QDPMI: Insufficient stack space to process software int
QDPMI: No User Handler for interrupt
QDPMI: Kernel issued software int!
QDPMI: Illegal value in chain thunk: Exiting
QDPMI: Cannot find expected free page
QDPMI: Cannot allocate system stack
QDPMI: No temporary GDT selectors available
QDPMI: Illegal Real Mode Call Back number
QDPMI: Bad free swap page pointer
QDPMI: Cannot grow memory pool
QDPMI: No pages available in swap file
QDPMI: No pages available for swap-in
QDPMI: Error writing swap file
QDPMI: Error reading swap file
DOS EXTENDER error messages are as follows:
-------------------------------------------
DosX: Bad function called
DosX: Function not supported
DosX: Undefined DOS function
DosX: Real mode interrupt failed
DosX: Failed to Allocate real mode call back address
DosX: Int 33h fxn 15h has not been called
DosX: Cannot allocate buffer
DosX: Failed to copy data to real mode buffer
DosX: Failure calling real mode